home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-08-15 | 2.8 KB | 117 lines | [TEXT/ALFA] |
- # **************************************************************
- #
- # Filename : pasteWordUnderMouse.tcl
- #
- # Author : HjK
- #
- # Creation Date: 11.03.1995 {14:06:59 Uhr}
- # Last update: 24.04.1995 {11:25:53 Uhr}
- #
- # System : Alpha Version 6.0b13, Mar. 25, 1995
- #
- # Copyright: Juergen Krey, 11.03.1995
- #
- # MAIL: Bergstr. 38, 53783 Eitorf
- # E-mail: krey@gmd.de
- #
- # **************************************************************
- # Trying to program pasteWordUnderMouse
-
- # matchIt doesnt work correct for () and [] at some positions
- # therefore use balance, if appropriate
- # There are four possible Delimiter matches
- # ・ openingDelim right of mouse-pointed position
- # ・ openingDelim left of mouse-pointed position
- # ・ closingDelim right of mouse-pointed position
- # ・ closingDelim left of mouse-pointed position
- # ... they are treated in the enumerated order!
-
- proc pasteWordUnderMouse { {insertWhitespace 0} } {
- set res [catch {mousePos} mousePos]
- if {$res != 0} { return }
- set oldCursorPos [getPos]
- set bufferPos [eval rowColToPos $mousePos]
- goto $bufferPos
-
- set nextPos [expr $bufferPos + 1]
- set nextChar [getText $bufferPos $nextPos]
-
- set prevPos [expr $bufferPos - 1]
- set prevChar [getText $prevPos $bufferPos]
-
- set closingDelims "¥x29¥x5d¥x7d"
- set openingDelims "¥x28¥x5b¥x7b"
-
- # ・ openingDelim right of mouse-pointed position
- if {[string first $nextChar $openingDelims] != -1} {
- goto $nextPos
- set balanceFailed [catch {balance}]
- if {! $balanceFailed} {
- set res [getSelect]
- goto $oldCursorPos
- insertText $res
- return
- }
- }
-
- # ・ openingDelim left of mouse-pointed position
- if {[string first $prevChar $openingDelims] != -1} {
- set balanceFailed [catch {balance}]
- if {! $balanceFailed} {
- set res [getSelect]
- goto $oldCursorPos
- insertText $res
- return
- }
- }
-
- # ・ closingDelim right of mouse-pointed position
- if {[string first $nextChar $closingDelims] != -1} {
- set balanceFailed [catch {balance}]
- if {! $balanceFailed} {
- set res [getSelect]
- goto $oldCursorPos
- insertText $res
- return
- }
- }
-
- # ・ closingDelim left of mouse-pointed position
-
- if {[string first $nextChar $closingDelims] != -1} {
- goto $prevPos
- set balanceFailed [catch {balance}]
- if {! $balanceFailed} {
- set res [getSelect]
- goto $oldCursorPos
- insertText $res
- return
- }
- }
- # ・ normal insertion of a wordBreak-Pattern string
-
- backwardWord
- set from [getPos]
- forwardWord
- set to [getPos]
- set res [getText $from $to]
- goto $oldCursorPos
- switch $insertWhitespace {
- 0 {set res " $res "}
- 1 {}
- 2 {append res .}
- default {}
- }
- insertText $res
- }
- #endproc pasteWordUnderMouse
-
- ##############################################################################
-
- bind F10 <s> {pasteWordUnderMouse 0}
- bind F10 {pasteWordUnderMouse 1}
- bind F10 <z> {pasteWordUnderMouse 2}
-
-
-
- # **************************************************EOF